如何使用 procdump 捕获未处理异常的崩溃转储
How to capture crash dump for unhandled exception using procdump
下面是我故意导致 2 NullPointerException 的代码片段。第一个被处理了。而第二个未处理。我想在发生崩溃时在第二个异常上创建故障转储。
int* nullPtr = NULL;
try{
x = *nullPtr;
}
catch(...) {
QLOG_WARNING0(QTEXT("catching 1st null ptr exception."));
}
y = *nullPtr;
这确实会使进程崩溃,但不会仅使用 -e 选项生成转储。
我应该使用什么选项来获取转储?
或者有什么方法可以使用 debugDiag 工具实现吗?如果可以,怎么做?
这只是一个示例代码。我正在调试的实际用例有一个进程崩溃,但我无法为崩溃进行转储。如果我使用第一次机会选项 (-e 1),则会触发转储的有效处理异常。这导致 procdump 在实际崩溃发生之前退出。
“No I am open to any other tool.”
根据您的评论,还有其他方法可以捕获转储文件。在我对 Getting detailed crash dumps from a hooked exe 的回答中,
你会看到你可以设置一些注册表项设置来捕获未处理异常的转储。这些设置假定您已启用 Windows 错误报告 。我什至将这些设置合并到我公司在调试棘手的客户崩溃时使用的小型实用程序中。
下面是我故意导致 2 NullPointerException 的代码片段。第一个被处理了。而第二个未处理。我想在发生崩溃时在第二个异常上创建故障转储。
int* nullPtr = NULL;
try{
x = *nullPtr;
}
catch(...) {
QLOG_WARNING0(QTEXT("catching 1st null ptr exception."));
}
y = *nullPtr;
这确实会使进程崩溃,但不会仅使用 -e 选项生成转储。 我应该使用什么选项来获取转储?
或者有什么方法可以使用 debugDiag 工具实现吗?如果可以,怎么做?
这只是一个示例代码。我正在调试的实际用例有一个进程崩溃,但我无法为崩溃进行转储。如果我使用第一次机会选项 (-e 1),则会触发转储的有效处理异常。这导致 procdump 在实际崩溃发生之前退出。
“No I am open to any other tool.”
根据您的评论,还有其他方法可以捕获转储文件。在我对 Getting detailed crash dumps from a hooked exe 的回答中, 你会看到你可以设置一些注册表项设置来捕获未处理异常的转储。这些设置假定您已启用 Windows 错误报告 。我什至将这些设置合并到我公司在调试棘手的客户崩溃时使用的小型实用程序中。